// 简单的API测试工具
import axios from 'axios'

// 创建一个专用的axios实例用于测试
export const testAxios = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 10000
})

// 添加详细的请求拦截器
testAxios.interceptors.request.use(config => {
  console.log('=== 请求开始 ===')
  console.log('请求配置:', config)
  console.log('请求URL:', config.baseURL + config.url)
  console.log('请求数据:', config.data)
  console.log('代理目标:', 'http://localhost:8080' + config.url.replace(config.baseURL, ''))
  console.log('=== 请求结束 ===')
  return config
})

// 添加详细的响应拦截器
testAxios.interceptors.response.use(response => {
  console.log('=== 响应开始 ===')
  console.log('响应状态码:', response.status)
  console.log('响应头:', response.headers)
  console.log('响应数据:', response.data)
  console.log('=== 响应结束 ===')
  return response
}, error => {
  console.error('=== 请求错误 ===')
  console.error('错误对象:', error)
  if (error.response) {
    console.error('错误状态码:', error.response.status)
    console.error('错误响应头:', error.response.headers)
    console.error('错误响应数据:', error.response.data)
  } else if (error.request) {
    console.error('没有收到响应:', error.request)
  } else {
    console.error('请求配置错误:', error.message)
  }
  console.error('=== 错误结束 ===')
  return Promise.reject(error)
})

// 测试不同的API路径
export async function testAllPaths(question = '测试问题') {
  console.log('=== 开始API路径测试 ===')
  
  // 定义要测试的基本路径
  const basePaths = [
    '',
    '/dev-api',
    '/prod-api'
  ]
  
  // 定义要测试的API端点
  const endpoints = [
    '/api/chat',
    '/ai/chat',
    '/chat',
    '/ai/api/chat' // 根据后端Controller添加的正确路径
  ]
  
  // 测试直接连接后端（绕过代理）
  const directBackendUrl = 'http://127.0.0.1:9205'
  
  console.log('环境信息:', {
    baseURL: process.env.VUE_APP_BASE_API,
    NODE_ENV: process.env.NODE_ENV,
    '代理配置': 'http://localhost:8080' + '(移除' + process.env.VUE_APP_BASE_API + '前缀)',
    '直接后端地址': directBackendUrl
  })
  
  // 构造所有可能的路径组合
  const pathsToTest = []
  basePaths.forEach(base => {
    endpoints.forEach(endpoint => {
      pathsToTest.push(base + endpoint)
    })
  })
  
  // 去重
  const uniquePathsToTest = [...new Set(pathsToTest)]
  console.log('要测试的路径总数:', uniquePathsToTest.length)
  
  // 定义请求数据
  const requestData = {
    question: question,
    timestamp: Date.now(),
    version: '1.0.0'
  }
  
  // 测试所有路径
  for (const path of uniquePathsToTest) {
    console.log('\n\n===== 测试路径:', path, '=====')
    try {
      const response = await testAxios({
        url: path,
        method: 'post',
        data: requestData,
        headers: {
          'Content-Type': 'application/json;charset=utf-8',
          'X-API-Test': 'true',
          'X-Test-Timestamp': Date.now()
        }
      })
      console.log('测试成功!', response.data)
      return { success: true, path, response }
    } catch (error) {
      console.error('测试失败:', path)
      console.error('错误详情:', error.message)
    }
  }
  
  // 如果所有代理路径都失败，尝试直接连接后端
  console.log('\n\n===== 尝试直接连接后端:', directBackendUrl, '=====')
  try {
    const directAxios = axios.create({
      baseURL: directBackendUrl,
      timeout: 10000,
      headers: {
        'Content-Type': 'application/json;charset=utf-8'
      }
    })
    
    for (const endpoint of endpoints) {
      console.log('测试直接连接:', endpoint)
      const response = await directAxios({
        url: endpoint,
        method: 'post',
        data: requestData
      })
      console.log('直接连接测试成功!', response.data)
      return { success: true, path: directBackendUrl + endpoint, response }
    }
  } catch (error) {
    console.error('直接连接后端失败:', error.message)
  }
  
  console.log('\n=== API路径测试完成，所有路径都失败了 ===')
  return { success: false, message: '所有API路径都测试失败' }
}